package exception;

import java.awt.*;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLClientInfoException;

/**
 * 子类重写超类含有throws声明异常抛出时对throws的重写规则
 */
public class ThrowsDemo {

    // 超类抛出的异常有IOException, AWTException
      public void doSome() throws IOException, AWTException{}
}

class SubClass  extends  ThrowsDemo{

    // public void doSome() throws IOException, AWTException{}

    // 允许子类重写方法时仅抛出部分异常
    // public void doSome() throws IOException{}

    // 允许子类不抛出异常
    // public void doSome(){}

    // 允许子类抛出超类声明抛出异常的子类异常
    // FileNotFoundException 是 IOException 的子类
    // public void doSome() throws FileNotFoundException {}

    // 不允许抛出额外异常(超类方法没有声明抛出的，且不存在继承关系的异常)
    // public void doSome() throws SQLClientInfoException {}  // 报错

    // 不允许抛出超类方法声明异常的超类型异常
    // public void doSome() throws Exception{}  // 报错
}
